<#-- 计算出需要导入的import -->
<#assign primaryKeyType = columns?filter(column -> column.primary)?first.javaType>

package ${packageName}.service;

import vip.liux.application.dots.PagedResultDto;
import vip.liux.application.dots.ListResultDto;

/**
 * ${className}服务接口
 * 提供${className}实体的业务操作方法
 */
public interface ${className}Service {

/**
* 分页查询${className}实体
* @param input 查询条件和分页参数
* @return 分页结果Dto
*/
PagedResultDto
<${className}Dto> pageList(Query${className}Dto input);

    /**
     * 创建${className}实体
     * @param input 创建所需的数据传输对象
    * @return 创建成功后的实体Dto
     */
    ${className}Dto save(Create${className}Dto input);

    /**
     * 获取所有${className}实体列表
    * @return 所有实体的Dto列表
     */
    ListResultDto
    <${className}Dto> allList();

        /**
        * 获取所有${className}实体列表
        * @param input 查询条件和分页参数
        * @return 所有实体的Dto列表
        */
        ListResultDto
        <${className}Dto> list(Query${className}Dto input);

    /**
     * 根据ID获取${className}实体详情
     * @param id 实体ID
            * @return 实体详情Dto
     */
            ${className}Dto detail(${primaryKeyType} id);

    /**
     * 更新${className}实体
     * @param id 要更新的实体ID
     * @param input 更新数据传输对象
            * @return 更新后的实体Dto
     */
    ${className}Dto update(${primaryKeyType} id, Update${className}Dto input);

    /**
     * 删除${className}实体
     * @param id 要删除的实体ID
     */
    void delete(${primaryKeyType} id);
}